package net.suplementos.web.action;

import java.util.List;

import net.suplementos.negocio.FinanceiroDelegate;
import net.suplementos.pojo.Venda;
import net.suplementos.servico.FinanceiroServico;
import net.suplementos.web.LocalConstantes;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;

@Namespace("/autorizarDesconto")
@InterceptorRefs({
	@InterceptorRef(value = "store", params = {"operationMode", "AUTOMATIC"}),
	@InterceptorRef("defaultStack")
})
public class AutorizarDescontoAction extends ActionSupport {
	
	private Venda venda;
	private List<Venda> resultadoConsulta;
	private FinanceiroServico financeiroServico = FinanceiroDelegate.getInstance();
	
	private boolean permitirDesconto;

	@Action(value = "listarSolicitacoes", results = {
		@Result(name = SUCCESS, location = LocalConstantes.LOCAL_JSP_FINANCEIRO_AUTORIZAR_DESCONTO + "/listar.jsp") 
	})
    public String listarSolicitacoes() throws Exception {
		setResultadoConsulta(financeiroServico.listarSolicitacoesDescontoPendentes());
        return SUCCESS;
    }

	@Action(value = "abrirSolicitacao", results = {
			@Result(name = SUCCESS, location = LocalConstantes.LOCAL_JSP_FINANCEIRO_AUTORIZAR_DESCONTO + "/venda.jsp")
	})
	public String abrirSolicitacao() throws Exception {
		return SUCCESS;
	}

	@Action(value = "atenderSolicitacao", results = {
		@Result(name = SUCCESS, params = {"actionName", "listarSolicitacoes"}, type = "redirectAction")
	})
	public String atenderSolicitacao() throws Exception {
		addActionMessage(getText("autorizar.desconto.mensagem.desconto", new String[]{"Concedido"}));
		financeiroServico.permitirDesconto(venda, permitirDesconto);
		return SUCCESS;
	}

	public Venda getVenda() {
		return venda;
	}

	public void setVenda(Venda venda) {
		this.venda = venda;
	}

	public List<Venda> getResultadoConsulta() {
		return resultadoConsulta;
	}

	public void setResultadoConsulta(List<Venda> resultadoConsulta) {
		this.resultadoConsulta = resultadoConsulta;
	}

	public boolean isPermitirDesconto() {
		return permitirDesconto;
	}

	public void setPermitirDesconto(boolean permitirDesconto) {
		this.permitirDesconto = permitirDesconto;
	}
}